package me.zhengjie.utils;

import cn.hutool.core.date.DateUtil;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.UUID;

public class FileStorageUtil {

    public static String saveFile(MultipartFile file, String targetDir) throws IOException {
        // 检查文件是否为空
        if (file.isEmpty()) {
            throw new IllegalArgumentException("上传文件不能为空");
        }
        // 处理目标目录
        Path dirPath = Paths.get(targetDir);
        if (!Files.exists(dirPath)) {
            Files.createDirectories(dirPath); // 创建所有缺失的目录
        }
        // 生成唯一文件名，避免重名覆盖
        String suffix = FileUtil.getExtensionName(file.getOriginalFilename());
        Path targetPath = dirPath.resolve(generateUniqueFileName(suffix));
        // 保存文件到目标路径
        file.transferTo(targetPath);

        return targetPath.toString();
    }

    // 提取安全的文件名（剥离路径信息）
    private static String extractFileName(String originalFileName) {
        return Paths.get(originalFileName).getFileName().toString();
    }

    // 生成唯一文件名（UUID + 原始文件名）
    private static String generateUniqueFileName(String fileName) {
        return DateUtil.format(new Date(), "yyyyMMddHHmmss")+ "." + fileName;
    }
}